package thinkingInJava.enumerated;
import static thinkingInJava.YTool.YPrint.print;
import static thinkingInJava.YTool.YPrint.printnb;
import static thinkingInJava.enumerated.AlarmPoints.BATHROOM;
import static thinkingInJava.enumerated.AlarmPoints.KITCHEN;
import static thinkingInJava.enumerated.AlarmPoints.UTILITY;

// page 602
//: enumerated/EnumMaps.java
//Basics of EnumMaps.
import java.util.EnumMap;
import java.util.Map;

interface Command { void action(); }

public class EnumMaps {
	public static void main(String[] args) {
		EnumMap<AlarmPoints,Command> em =
				new EnumMap<AlarmPoints,Command>(AlarmPoints.class);
		em.put(KITCHEN, new Command() {
			public void action() { print("Kitchen fire!"); }
		});
		em.put(BATHROOM, new Command() {
			public void action() { print("Bathroom alert!"); }
		});
		for(Map.Entry<AlarmPoints,Command> e : em.entrySet()) {
			printnb(e.getKey() + ": ");
			e.getValue().action();
		}
		try { // If there's no value for a particular key:
			em.get(UTILITY).action();
		} catch(Exception e) {
			print(e);
		}
	}
} /* Output:
BATHROOM: Bathroom alert!
KITCHEN: Kitchen fire!
java.lang.NullPointerException
 *///:~
